typedef struct rs_BlockFillMaster rs_BlockFillMaster;

typedef struct rs_Map rs_Map;

struct rs_BlockFillMaster *rs_Blk1010FillMaster_new(uint8_t task_per_frame);

void rs_Blk1010FillMaster_free(struct rs_BlockFillMaster *p_pcs);

int8_t rs_Blk1010FillMaster_fill_request(struct rs_BlockFillMaster *p_bfm, struct rs_Map *p_map);

int8_t rs_Blk1010FillMaster_update(struct rs_BlockFillMaster *p_bfm, uint8_t *p_out);

struct rs_Map *rs_Blk1010Map_new(uint8_t row, uint8_t col);

void rs_Blk1010Map_free(struct rs_Map *p_pcs);

int8_t rs_Blk1010Map_assign(struct rs_Map *p_pcs,
                            const uint8_t *p_data,
                            uintptr_t data_len,
                            uint8_t combo,
                            uint32_t score,
                            uint32_t clear_all_score);

int8_t rs_Blk1010Map_assign_by_mapid(struct rs_Map *p_pcs,
                                     uintptr_t mapid,
                                     uint8_t combo,
                                     uint32_t score);
